/*
 * anima/init.hh - Initialization-related declarations.
 * Copyright (C) 2007  Mikhail Vorozhtsov
 * See the LICENSE section of the README file for details.
 */

/* $Id$ */

#ifndef HEADER_ANIMA_INIT_HH
#define HEADER_ANIMA_INIT_HH

#include HEADER (anima,object.hh)
#include HEADER (elbp,elbp.hh)

START_NAMESPACE (anima)

extern "C" void init_bsp (u64_t elbp_magic, elbp::info_t *elbp_info);
extern "C" void init_ap ();

class init
{
  friend void init_bsp (u64_t, elbp::info_t *);

private:
  static bool _done_p;
  static space_ref_t main_space;

public:
  INLINE
  static bool
  done_p ()
  {
    return _done_p;
  }

  INLINE
  static space_ref_t
  get_main_space ()
  {
    return main_space;
  }

public:
  static void print_ctrl_transfer ();
};

END_NAMESPACE

#endif /* HEADER_ANIMA_INIT_HH */

